Replication README

Project: EU ETS Market Expectations and Rational Bubbles (MS 2025-410)

This replication package is organized around the tables and figures in the paper. Before running any script, users must set the input and output directory paths at the beginning of the respective R file to match their own local folder structure. The paths used in the scripts refer to the authors' machines and are included only as examples. The input-data folder and the output folder can be located anywhere on the user's computer.

Data source
The original weekly spot and futures data were obtained from Bloomberg. The spot series is based on Bloomberg ticker ICEDEU3 Index, together with the corresponding EU ETS futures contracts. The sample covers January 4, 2013 to October 11, 2023 and contains 563 weekly observations.

The proprietary Bloomberg Excel file is not distributed. Instead, the main empirical results are replicated from processed text files included in the replication package.

Required R packages
The scripts use the following R packages:
readxl, exuber, ivx, CausalArima, dplyr, ggplot2.

The CausalArima package is available from GitHub:
devtools::install_github("FMenchetti/CausalArima")

The package tidybayes may be required before installing CausalArima.

1. Main results: directly replicable from processed .txt files

The main rational bubble results can be replicated directly from the processed .txt files included in the package. These files do not require access to the proprietary Bloomberg Excel file.

Required processed input files include:
ivx_input_n4_w104.txt, ivx_input_n8_w104.txt, ivx_input_n12_w104.txt, ivx_input_n16_w104.txt
ivx_input_n4_w130.txt, ivx_input_n8_w130.txt, ivx_input_n12_w130.txt, ivx_input_n16_w130.txt
ivx_input_n4_w156.txt, ivx_input_n8_w156.txt, ivx_input_n12_w156.txt, ivx_input_n16_w156.txt
z0_p3l4.txt, z0_p3l1.txt, z0_p4.txt

Run_Table_03.R
Replicates Table 3. The script computes the supremum IVX-AR Wald statistics for horizons n = 4, 8, 12, and 16 and rolling windows w = 104, 130, and 156. It reports the Bonferroni-adjusted critical values in parentheses. The table is produced in R.

Required package: ivx.
Input data: processed ivx_input_n*_w*.txt files.
Directly replicable from included processed data: yes.

Run_Table_04.R
Replicates Table 4. The script reports the dates with significant exceedances for horizon n = 12, together with the corresponding IVX-AR slope estimates and Wald statistics.

Required package: ivx.
Input data: processed ivx_input_n12_w130.txt and ivx_input_n12_w156.txt files.
Directly replicable from included processed data: yes.

Run_Figure_05_16.R
Replicates Figures 5 to 16. The script produces the rolling IVX-AR test-statistic plots and the corresponding AR-lag Wald-statistic panels for all combinations of n = 4, 8, 12, 16 and w = 104, 130, 156. The figures are saved as PDF files.

Required package: ivx.
Input data: processed ivx_input_n*_w*.txt files.
Directly replicable from included processed data: yes.

Run_causal_ARIMA.R
Replicates the causal ARIMA analysis reported in Section 4.4. The script computes the reported t-statistics for the Phase III and Phase IV comparisons.

Required packages: CausalArima.
Input data: processed z0_p3l4.txt, z0_p3l1.txt, and z0_p4.txt files.
Directly replicable from included processed data: yes.

Run_Figure_02.R
Replicates Figure 2. This is a figure based on the theoretical expression for beta_{2,n} = 1 - C derived in the paper and online appendix. It does not use market data.

Required packages: none beyond base R.
Input data: none.
Directly replicable from included code: yes.

2. Descriptive statistics: require Bloomberg-derived Excel data

The following scripts use the original Excel file data_fut.xlsx. This file is based on proprietary Bloomberg data and is not included in the public replication package. Users with Bloomberg access can reconstruct this file from ICEDEU3 Index and the corresponding EU ETS futures contracts for the sample January 4, 2013 to October 11, 2023.

Run_Table_01.R
Replicates Table 1. The script reports summary statistics for the spot price and synthetic futures prices with maturities of 1 to 4 months.

Required package: readxl.
Input data: data_fut.xlsx.
Can be run by users with Bloomberg access and the reconstructed Excel file: yes.

Run_Table_02.R
Replicates Table 2. The script computes GSADF statistics for spot and futures price series using one and four lags and reports rejections at the 5% level based on wild bootstrap critical values.

Required packages: readxl, exuber.
Input data: data_fut.xlsx.
Can be run by users with Bloomberg access and the reconstructed Excel file: yes.

Run_Figure_01.R
Replicates Figure 1. The script plots the EU ETS spot price series and marks the relevant phase dates.

Required package: readxl.
Input data: data_fut.xlsx.
Can be run by users with Bloomberg access and the reconstructed Excel file: yes.

Run_Figure_03_04.R
Replicates Figures 3 and 4. The script computes BSADF date-stamping results using one lag and four lags and saves the corresponding figures in PDF format.

Required packages: readxl, exuber, dplyr, ggplot2.
Input data: data_fut.xlsx.
Can be run by users with Bloomberg access and the reconstructed Excel file: yes.

Directory settings
Each R script contains directory paths at the beginning. These paths must be changed by the user before running the code. The input directory should point to the folder containing the required data files, either the processed .txt files or, for the descriptive statistics, the reconstructed Bloomberg Excel file data_fut.xlsx. The output directory should point to the folder where PDF figures should be written. The folder named "PATH/TO/OUTPUT_FOLDER" in the authors' scripts is only the authors' example output location; users may choose any local output directory.

Recommended workflow
0. Install R Version 4.5.2 (2025-10-31 ucrt) -- "[Not] Part in a Rumble" (or newer)
1. Install the required R packages.
2. Set the input and output directories in each script to the user's own local folders.
3. Run the main results scripts first:
   Run_Table_03.R
   Run_Table_04.R
   Run_Figure_05_16.R
   Run_causal_ARIMA.R
   Run_Figure_02.R
4. Users with access to Bloomberg data may additionally reconstruct data_fut.xlsx and run the descriptive scripts:
   Run_Table_01.R
   Run_Table_02.R
   Run_Figure_01.R
   Run_Figure_03_04.R


